package persistencia.dao;

import org.hibernate.Query;
import persistencia.hbt.HibernateUtil;
import bean.EntidadPersistente;
import bean.Proveedor;
import bean.RemitoProveedor;

public class RemitoProveedorDAO extends EntidadPersistenteDAO {
		private static RemitoProveedorDAO instancia = null;
		
		public static RemitoProveedorDAO getInstancia(){
			if(instancia == null)
				instancia = new RemitoProveedorDAO();
			
			if (session == null)
				session = HibernateUtil.getSession();
			
			return instancia;
		}
		
		public RemitoProveedor buscar(EntidadPersistente entidad)
		{
			RemitoProveedor rem = (RemitoProveedor) entidad;
			
			if (rem.getId() != null)
				return (RemitoProveedor) super.buscar(rem);
			else if (rem.getNumeroRemito() != null && rem.getProveedor() != null)
				return this.buscar(rem.getNumeroRemito(), rem.getProveedor());
			
			return null;
		}
		
		private RemitoProveedor buscar(Integer numeroRemito, Proveedor proveedor){
			Query query = session.createQuery(" from RemitoProveedor r where r.numeroRemito = :num and r.proveedor = :prov");
			query.setInteger("num", numeroRemito);
			query.setEntity("prov", proveedor);
			
			RemitoProveedor r = (RemitoProveedor) query.setFirstResult(0).setMaxResults(1).uniqueResult();
			return r;
		}
}
